"""
遍历列表
在 Python 中，有多种方法可以遍历列表。以下是其中一些常见的方法：
"""
fruits = ['apple', 'banana', 'orange', 'grape']
print(fruits)

print("----------------1 for循环------------")
# 方法1: 使用 for 循环
for item in fruits:
    print(item)
# 方法2：for循环索引取值
print("----------------2. for循环索引取值------------")
for index in range(len(fruits)):
    print(fruits[index])

# 方法3: 使用 while 循环
print("----------------3. while循环------------")
index = 0
while index < len(fruits):
    print(fruits[index])
    index += 1

# 方法4: 使用列表的 enumerate() 函数
print("----------------4. enumerate循环------------")
for index, item in enumerate(fruits):
    print(index, item)
    print(f"Index: {index}, Item: {item}")

# 方法5: 使用列表推导式 (List Comprehension)
print("----------------5. 列表推导式------------")
[print(item) for item in fruits]

# 方法6: 使用 map() 函数
print("----------------6. map函数------------")


def print_item(item):
    print(item)


list(map(print_item, fruits))

"""
range()函数
在 Python 中，range() 函数用于生成一个整数序列，通常用于循环中。它有多种用法，以下是其中一些常见的用法：
"""
# 方法1: range(n) 生成从 0 到 n-1 的整数序列
print("----------------1. range(n)------------")
for i in range(5):
    print(i)

# 方法2: range(start, stop) 生成从 start 到 stop-1 的整数序列
print("----------------2. range(start, stop)------------")
for i in range(2, 8):
    print(i)

# 方法3: range(start, stop, step) 生成从 start 到 stop-1 的整数序列，步长为 step
print("----------------3. range(start, stop, step)------------")
for i in range(1, 10, 2):
    print(i)

# 方法4: 使用 range() 函数生成列表
print("----------------4. 使用 range() 函数生成列表------------")
numbers = list(range(1, 6))
print(numbers)

# 方法5: 使用 range() 函数生成元组
print("----------------5. 使用 range() 函数生成元组------------")
numbers = tuple(range(1, 6))
print(numbers)

# 方法6: 使用 range() 函数生成集合
print("----------------6. 使用 range() 函数生成集合------------")
numbers = set(range(1, 6))
print(numbers)

# 方法7: 使用 range() 函数生成字典
print("----------------7. 使用 range() 函数生成字典------------")
numbers = {i: i ** 2 for i in range(1, 6)}
print(numbers)

# 方法8: 使用 range() 函数生成生成器
print("----------------8. 使用 range() 函数生成生成器------------")
numbers = [i for i in range(1, 6)]
print(numbers)

# 示例：计算 1 到 10 的平方
print("----------------9. 使用 range() 函数生成生成器------------")
squares = [value ** 2 for value in range(1, 11)]
print(squares)

# 示例：计算 1 到 10 的平方
squares = []
for value in range(1, 11):
    square = value ** 2
    squares.append(square)
    print(squares)

print("-------------数值计算---------------")
numbers = list(range(1, 6))
print(numbers)

print("-------------计算列表中所有元素的和---------------")
# 计算列表中所有元素的和
total = sum(numbers)
print(total)

print("-------------计算列表中所有元素的最大值---------------")
# 计算列表中所有元素的最大值
max_value = max(numbers)
print(max_value)

print("-------------计算列表中所有元素的最小值---------------")
# 计算列表中所有元素的最小值
min_value = min(numbers)
print(min_value)

print("-------------使用列表推导式创建平方数列表：---------------")
# 使用列表推导式创建平方数列表：
squares = [value ** 2 for value in range(1, 11)]
print(squares)

print("-------------列表切片使用---------------")
# 列表切片使用
players = ['charles', 'martina', 'michael', 'florence', 'eli']
# 打印从索引 0 开始到索引 3 的元素, 不包括索引 3
print(players[0:3])
# 打印从索引 1 开始到索引 4 的元素, 不包括索引 4
print(players[1:4])
# 索引开始位置不指定, 则默认为 0
print(players[:4])
# 索引结束位置不指定, 则默认为列表的长度
print(players[2:])
# 倒序索引, 打印列表中的最后二个元素
print(players[-2:])

print("-------------遍历切片使用---------------")
# 遍历切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
for player in players[:3]:
    print(player.title())

print("-------------复制列表使用---------------")
# 复制列表
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("\nMy favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
